function GetSpaceOnDisk(const Path: String; const InMegabytes: Boolean; var Free, Total: Cardinal): Boolean;
Returns the number of free and total bytes or megabytes on a drive. Path specifies a directory on the drive or UNC share to check; it can be either the root (e.g. C:\) or an existing subdirectory. The setting of the InMegabytes parameter determines whether it returns figures in bytes or in megabytes (2^20), rounded down. Returns True if successful, False otherwise.
The figures returned by this function are capped at 2147483647 (2^31-1). Therefore, if InMegaBytes is False, it will return no more than 2147483647 bytes. If InMegaBytes is True, it will return no more than 2147483647 megabytes.
var Path: String; FreeMB, TotalMB: Cardinal; begin // Get and display free megabytes on the Program Files drive Path := ExpandConstant('{pf}'); if GetSpaceOnDisk(Path, True, FreeMB, TotalMB) then begin MsgBox('There are ' + IntToStr(FreeMB) + ' megabytes free on ' + Path, mbInformation, MB_OK); end else begin // the function failed end; end;